package br.com.jmmarca.controller;

//import br.com.jmmarca.model.Usuario;
import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.TabHost.TabSpec;
import android.widget.Toast;
import br.com.jmmarca.dao.impl.UsuarioDAO;
import br.com.jmmarca.model.Usuario;
import br.com.jmmarca.util.Utils;

public class CrudUsuario extends GenericTabActivity {

	private static final String TAG_LOG = "App_crudusuario";
	List<Usuario> listaUsuarios = new ArrayList<Usuario>();
	ArrayAdapter<Usuario> adaptador = null;
	EditText nome = null;
	EditText login = null;
	EditText senha = null;
	RadioGroup tipo = null;
	UsuarioDAO gerenciador;
	Integer idRegistro = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.usuario_main);
		gerenciador = UsuarioDAO.getInstance(getApplicationContext());

		nome = (EditText) findViewById(R.id.txt_usr_nome);
		login = (EditText) findViewById(R.id.txt_usr_login);
		senha = (EditText) findViewById(R.id.txt_usr_senha);
		tipo = (RadioGroup) findViewById(R.id.txt_usr_tipo);

		
		Button salvar = (Button) findViewById(R.id.btnSalvar);
		salvar.setOnClickListener(onSave);
		Button cancelar = (Button) findViewById(R.id.btnCancelar);
		cancelar.setOnClickListener(onCancel);

		TabSpec descritor = getTabHost().newTabSpec("tag1");
		descritor.setContent(R.id.Usuarios);
		descritor.setIndicator("Listar",
				getResources().getDrawable(R.drawable.lista));
		getTabHost().addTab(descritor);

		descritor = getTabHost().newTabSpec("tag2");
		descritor.setContent(R.id.detalhesUsuario);
		descritor.setIndicator("Cadastrar",
				getResources().getDrawable(R.drawable.add));
		getTabHost().addTab(descritor);

		getTabHost().setCurrentTab(0);

		carregaListagem();
	}

	public void carregaFormulario() {
		Log.w(TAG_LOG, "carregaFormulario");
		if (idRegistro != null) {

			Usuario usuario = gerenciador.encontrar(idRegistro);
			if (usuario != null) {
				nome.setText(usuario.getNome());
				login.setText(usuario.getLogin());
				senha.setText(usuario.getSenha());
				if (usuario.getTipo().equals("ADM")) {
					tipo.check(R.id.txt_usr_tipo_adm);
				} else {
					tipo.check(R.id.txt_eve_ativo_nao);
				}
			} else {
				Utils.msg(getApplicationContext(), "Registro não encontrado");
			}
		} else {
			nome.setText("");
			login.setText("");
			senha.setText("");
			tipo.check(R.id.txt_eve_ativo_nao);
		}
	}

	private void carregaListagem() {
		ListView lista = (ListView) findViewById(R.id.Usuarios);

		listaUsuarios = gerenciador.listar();
		ArrayAdapter<Usuario> adapter = new ArrayAdapter<Usuario>(this,
				android.R.layout.simple_list_item_1, listaUsuarios);

		lista.setAdapter(adapter);

		lista.setOnItemClickListener(onListClick);
	}

	private void salvarCadastro() {
		if (nome.getText().toString().equals("")) {
			Toast msg = Toast.makeText(this, "O Campo Nome é requerido!",
					Toast.LENGTH_LONG);
			msg.show();
			return;
		}
		if (login.getText().toString().equals("")) {
			Toast msg = Toast.makeText(this, "O Campo login é requerido!",
					Toast.LENGTH_LONG);
			msg.show();
			return;
		}	
		if (senha.getText().toString().equals("")) {
			Toast msg = Toast.makeText(this, "O Campo Senha é requerido!",
					Toast.LENGTH_LONG);
			msg.show();
			return;
		}			
		String ativo_save = "USR";

		switch (tipo.getCheckedRadioButtonId()) {
		case R.id.txt_usr_tipo_usr:
			ativo_save = "USR";
			break;
		case R.id.txt_usr_tipo_adm:
			ativo_save = "ADM";
			break;
		default:
			ativo_save = "USR";
			break;
		}

		Log.w(TAG_LOG, "Salvando Cadastro");

		Usuario usuario = new Usuario(idRegistro);
		usuario.setNome(nome.getText().toString());
		usuario.setTipo(ativo_save);
		usuario.setLogin(login.getText().toString());
		usuario.setSenha(senha.getText().toString());

		

		gerenciador.salvar(usuario);
		// Atualiza lista
		listaUsuarios = gerenciador.listar();

		carregaListagem();
		getTabHost().setCurrentTab(0);
		// Registro selecionado
		idRegistro = null;
		carregaFormulario();

		Toast msg = Toast.makeText(this, "Dado Salvo com Sucesso!",
				Toast.LENGTH_LONG);
		msg.show();
	}

	@Override
	public void onDestroy() {
		super.onDestroy();
	}

	private OnItemClickListener onListClick = new OnItemClickListener() {

		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position,
				long id) {
			Usuario ev = listaUsuarios.get((int) id);
			idRegistro = ev.getId();
			if (idRegistro != null) {
				carregaFormulario();
			}

			getTabHost().setCurrentTab(1);
		}
	};
	
	private OnClickListener onSave = new OnClickListener() {

		@Override
		public void onClick(View arg0) {
			salvarCadastro();
		}
	};
	private OnClickListener onCancel = new OnClickListener() {

		@Override
		public void onClick(View arg0) {
			idRegistro = null;
			carregaFormulario();
			carregaListagem();
			// Volta para Listagem
			getTabHost().setCurrentTab(0);
		}
	};

	
}